<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>aws-crt-cpp: Aws::Crt::Io::ClientBootstrap Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">aws-crt-cpp
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceAws.html">Aws</a></li><li class="navelem"><a class="el" href="namespaceAws_1_1Crt.html">Crt</a></li><li class="navelem"><a class="el" href="namespaceAws_1_1Crt_1_1Io.html">Io</a></li><li class="navelem"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Aws::Crt::Io::ClientBootstrap Class Reference<span class="mlabels"><span class="mlabel">final</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="Bootstrap_8h_source.html">Bootstrap.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3ede19b93c955dd2cbf12e1905356bce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#a3ede19b93c955dd2cbf12e1905356bce">ClientBootstrap</a> (<a class="el" href="classAws_1_1Crt_1_1Io_1_1EventLoopGroup.html">EventLoopGroup</a> &amp;elGroup, <a class="el" href="classAws_1_1Crt_1_1Io_1_1HostResolver.html">HostResolver</a> &amp;resolver, <a class="el" href="namespaceAws_1_1Crt.html#a3c9efb213e2de565038afcfd4f8afcda">Allocator</a> *allocator=<a class="el" href="namespaceAws_1_1Crt.html#a7178ef65f261a8db52a624458331bbb2">g_allocator</a>) noexcept</td></tr>
<tr class="separator:a3ede19b93c955dd2cbf12e1905356bce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11cd43598dc65f15aa29a41904841508"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#a11cd43598dc65f15aa29a41904841508">~ClientBootstrap</a> ()</td></tr>
<tr class="separator:a11cd43598dc65f15aa29a41904841508"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6669a24157928a6182dce6fbd0ed87e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#ac6669a24157928a6182dce6fbd0ed87e">ClientBootstrap</a> (const <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;)=delete</td></tr>
<tr class="separator:ac6669a24157928a6182dce6fbd0ed87e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f021dc61db7beb93e26c27c0cf5a790"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#a2f021dc61db7beb93e26c27c0cf5a790">operator=</a> (const <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;)=delete</td></tr>
<tr class="separator:a2f021dc61db7beb93e26c27c0cf5a790"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a615bc843746ff0c53ffef5cc71b8f935"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#a615bc843746ff0c53ffef5cc71b8f935">ClientBootstrap</a> (<a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;&amp;)=delete</td></tr>
<tr class="separator:a615bc843746ff0c53ffef5cc71b8f935"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1fb109bea4421f99529160cd9d64654"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#ab1fb109bea4421f99529160cd9d64654">operator=</a> (<a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;&amp;)=delete</td></tr>
<tr class="separator:ab1fb109bea4421f99529160cd9d64654"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f99e80c2a7b605fcb6741a8a6cd7ea5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#a7f99e80c2a7b605fcb6741a8a6cd7ea5">operator bool</a> () const noexcept</td></tr>
<tr class="separator:a7f99e80c2a7b605fcb6741a8a6cd7ea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fe86b9d19bb0c75e836b32ba9a6582a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#a2fe86b9d19bb0c75e836b32ba9a6582a">LastError</a> () const noexcept</td></tr>
<tr class="separator:a2fe86b9d19bb0c75e836b32ba9a6582a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad33fec27c1600aaeb8e30ec32b1302c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#ad33fec27c1600aaeb8e30ec32b1302c9">SetShutdownCompleteCallback</a> (<a class="el" href="namespaceAws_1_1Crt_1_1Io.html#a3284b8b9a955c2b24fd3d095350f22e1">OnClientBootstrapShutdownComplete</a> callback)</td></tr>
<tr class="separator:ad33fec27c1600aaeb8e30ec32b1302c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0021ef57bec8381f73c69e5e4c46c0e1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#a0021ef57bec8381f73c69e5e4c46c0e1">EnableBlockingShutdown</a> () noexcept</td></tr>
<tr class="separator:a0021ef57bec8381f73c69e5e4c46c0e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> handles creation and setup of socket connections to specific endpoints.</p>
<p>Note that <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> may not clean up all its behind-the-scenes resources immediately upon destruction. If you need to know when behind-the-scenes shutdown is complete, use <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#ad33fec27c1600aaeb8e30ec32b1302c9">SetShutdownCompleteCallback()</a> or <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#a0021ef57bec8381f73c69e5e4c46c0e1">EnableBlockingShutdown()</a> (only safe on main thread). </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3ede19b93c955dd2cbf12e1905356bce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ede19b93c955dd2cbf12e1905356bce">&#9670;&nbsp;</a></span>ClientBootstrap() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Aws::Crt::Io::ClientBootstrap::ClientBootstrap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classAws_1_1Crt_1_1Io_1_1EventLoopGroup.html">EventLoopGroup</a> &amp;&#160;</td>
          <td class="paramname"><em>elGroup</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classAws_1_1Crt_1_1Io_1_1HostResolver.html">HostResolver</a> &amp;&#160;</td>
          <td class="paramname"><em>resolver</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceAws_1_1Crt.html#a3c9efb213e2de565038afcfd4f8afcda">Allocator</a> *&#160;</td>
          <td class="paramname"><em>allocator</em> = <code><a class="el" href="namespaceAws_1_1Crt.html#a7178ef65f261a8db52a624458331bbb2">g_allocator</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">elGroup</td><td><a class="el" href="classAws_1_1Crt_1_1Io_1_1EventLoopGroup.html">EventLoopGroup</a> to use. </td></tr>
    <tr><td class="paramname">resolver</td><td>DNS host resolver to use. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a11cd43598dc65f15aa29a41904841508"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11cd43598dc65f15aa29a41904841508">&#9670;&nbsp;</a></span>~ClientBootstrap()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Aws::Crt::Io::ClientBootstrap::~ClientBootstrap </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ac6669a24157928a6182dce6fbd0ed87e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6669a24157928a6182dce6fbd0ed87e">&#9670;&nbsp;</a></span>ClientBootstrap() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Aws::Crt::Io::ClientBootstrap::ClientBootstrap </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a615bc843746ff0c53ffef5cc71b8f935"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a615bc843746ff0c53ffef5cc71b8f935">&#9670;&nbsp;</a></span>ClientBootstrap() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Aws::Crt::Io::ClientBootstrap::ClientBootstrap </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;&amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a0021ef57bec8381f73c69e5e4c46c0e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0021ef57bec8381f73c69e5e4c46c0e1">&#9670;&nbsp;</a></span>EnableBlockingShutdown()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Aws::Crt::Io::ClientBootstrap::EnableBlockingShutdown </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Force the <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a>'s destructor to block until all behind-the-scenes resources finish shutting down.</p>
<p>This isn't necessary during the normal flow of an application, but it is useful for scenarios, such as tests, that need deterministic shutdown ordering. Be aware, if you use this anywhere other than the main thread, YOU WILL MOST LIKELY CAUSE A DEADLOCK.</p>
<p>Use <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html#ad33fec27c1600aaeb8e30ec32b1302c9">SetShutdownCompleteCallback()</a> for a thread-safe way to know when shutdown is complete. </p>

</div>
</div>
<a id="a2fe86b9d19bb0c75e836b32ba9a6582a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fe86b9d19bb0c75e836b32ba9a6582a">&#9670;&nbsp;</a></span>LastError()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int Aws::Crt::Io::ClientBootstrap::LastError </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the value of the last aws error encountered by operations on this instance. </dd></dl>

</div>
</div>
<a id="a7f99e80c2a7b605fcb6741a8a6cd7ea5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f99e80c2a7b605fcb6741a8a6cd7ea5">&#9670;&nbsp;</a></span>operator bool()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">Aws::Crt::Io::ClientBootstrap::operator bool </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">noexcept</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>true if the instance is in a valid state, false otherwise. </dd></dl>

</div>
</div>
<a id="ab1fb109bea4421f99529160cd9d64654"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1fb109bea4421f99529160cd9d64654">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a>&amp; Aws::Crt::Io::ClientBootstrap::operator= </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;&amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a2f021dc61db7beb93e26c27c0cf5a790"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f021dc61db7beb93e26c27c0cf5a790">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a>&amp; Aws::Crt::Io::ClientBootstrap::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ad33fec27c1600aaeb8e30ec32b1302c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad33fec27c1600aaeb8e30ec32b1302c9">&#9670;&nbsp;</a></span>SetShutdownCompleteCallback()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Aws::Crt::Io::ClientBootstrap::SetShutdownCompleteCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespaceAws_1_1Crt_1_1Io.html#a3284b8b9a955c2b24fd3d095350f22e1">OnClientBootstrapShutdownComplete</a>&#160;</td>
          <td class="paramname"><em>callback</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Set function to invoke when <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a>'s behind-the-scenes resources finish shutting down. This function may be invoked on any thread. Shutdown begins when the <a class="el" href="classAws_1_1Crt_1_1Io_1_1ClientBootstrap.html">ClientBootstrap</a>'s destructor runs. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/home/ANT.AMAZON.COM/dengket/doc/aws-crt-cpp/include/aws/crt/io/<a class="el" href="Bootstrap_8h_source.html">Bootstrap.h</a></li>
<li>/home/ANT.AMAZON.COM/dengket/doc/aws-crt-cpp/source/io/<a class="el" href="Bootstrap_8cpp.html">Bootstrap.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>
